package web.suzy.oj.service.admin.tag.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import web.suzy.oj.common.exception.StatusFailException;
import web.suzy.oj.common.result.ResultBean;
import web.suzy.oj.manager.admin.tag.AdminTagManager;
import web.suzy.oj.pojo.entity.problem.Tag;
import web.suzy.oj.pojo.entity.problem.TagClassification;
import web.suzy.oj.service.admin.tag.AdminTagService;

import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: AdminTagServiceImpl
 * 描述: ---- 待定 -----
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/28 14:31
 */
@Service
public class AdminTagServiceImpl implements AdminTagService {
    @Autowired
    private AdminTagManager adminTagManager;

    /**
     * 方法名: addTag
     * 描述: 添加题目标签
     *
     * @param tag 标签
     * @return web.suzy.oj.common.result.ResultBean<web.suzy.oj.pojo.entity.problem.Tag>
     * @date 2022/11/28 14:32
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Tag> addTag(Tag tag) {
        try {
            return ResultBean.successResponse(adminTagManager.addTag(tag));
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }

    /**
     * 方法名: updateTag
     * 描述: 更新题目标签
     *
     * @param tag 标签
     * @return web.suzy.oj.common.result.ResultBean<java.lang.Void>
     * @date 2022/11/28 14:39
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Void> updateTag(Tag tag) {
        try {
            adminTagManager.updateTag(tag);
            return ResultBean.successResponse();
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }

    /**
     * 方法名: deleteTag
     * 描述: 删除题目标签
     *
     * @param tid 标签ID
     * @return web.suzy.oj.common.result.ResultBean<java.lang.Void>
     * @date 2022/11/28 14:43
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Void> deleteTag(Long tid) {
        try {
            adminTagManager.deleteTag(tid);
            return ResultBean.successResponse();
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }

    /**
     * 方法名: getTagClassification
     * 描述: 获取标签分类
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.TagClassification>>
     * @date 2022/11/29 12:19
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<List<TagClassification>> getTagClassification() {
        return ResultBean.successResponse(adminTagManager.getTagClassification());
    }

    /**
     * 方法名: addTagClassification
     * 描述: 添加标签分类
     *
     * @param tagClassification 标签分类
     * @return web.suzy.oj.common.result.ResultBean<web.suzy.oj.pojo.entity.problem.TagClassification>
     * @date 2022/11/29 13:15
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<TagClassification> addTagClassification(TagClassification tagClassification) {
        try {
            return ResultBean.successResponse(adminTagManager.addTagClassification(tagClassification));
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }

    /**
     * 方法名: updateTagClassification
     * 描述: 更新标签分类
     *
     * @param tagClassification 标签分类
     * @return web.suzy.oj.common.result.ResultBean<java.lang.Void>
     * @date 2022/11/29 13:18
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Void> updateTagClassification(TagClassification tagClassification) {
        try {
            adminTagManager.updateTagClassification(tagClassification);
            return ResultBean.successResponse();
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }

    /**
     * 方法名: deleteTagClassification
     * 描述: 删除标签分类
     *
     * @param tcid 标签分类ID
     * @return web.suzy.oj.common.result.ResultBean<java.lang.Void>
     * @date 2022/11/29 13:20
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Void> deleteTagClassification(Long tcid) {
        try {
            adminTagManager.deleteTagClassification(tcid);
            return ResultBean.successResponse();
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        }
    }
}
